﻿using Sidvall.IO.Security;
using Sidvall.Net;
using Sidvall.Net.Mime;
using System.Threading;
using System.Threading.Tasks;

namespace Sidvall.IO
{
    public interface INetFileSystemStrategy
    {
        HttpMethod GetHttpMethod(ResourceType resource, FileSystemOperation action, HttpMethod method);
        MediaType? GetHttpResponseType(ResourceType resource, FileSystemOperation action, MediaType? responseType);
        string GetHttpContent(ResourceType resource, FileSystemOperation action, object value);
        string GetHttpRequestAddress(ResourceType resource, FileSystemOperation action, HttpMethod method, string storeId, string path);

        Task<bool?> FileExistsAsync(string path, CancellationToken cancellationToken);
        Task<long?> GetLengthAsync(string path, CancellationToken cancellationToken);
    }
}
